package com.jse.oo.design.pattern.structural.proxy.dynamic;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * 代理类
 * @author Administrator
 *
 */
public class ProxyWoman implements InvocationHandler
{
	//真实对象
    public YoungWoman target;
    
    public ProxyWoman(YoungWoman youngWoman) {
    	this.target = youngWoman;
    }
    
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
    {
    	System.out.println("this is invoke method");
//        return method.invoke(this, args);
    	//这里会输出java.lang.StackOverflowError，为什么？TODO
//    	System.out.println(proxy);
//    	System.out.println(method);
    	
    	//利用反射机制，或者经过一些判断而决定使用真实对象的哪个方法（表达式、if语句都可以实现）
        return method.invoke(target, args);
    }

}
